// @/util/requestPost.js
import config from "./config"
const BASE_URL = config.baseUrl // 替换为实际后端地址

const request = (options) => {
  return new Promise((resolve, reject) => {
    uni.request({
      url: BASE_URL + options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        'Authorization': uni.getStorageSync('token') ? `Bearer ${uni.getStorageSync('token')}` : ''
      },
      success: (res) => {
        // 统一处理响应结构
        if (res.statusCode === 200) {
          const result = res.data
          
          // 根据ReturnResultUtil规范判断
          if (result.code === 1) { // 成功状态码
            resolve({
              success: true,
              data: result.data,
              extra: result.extra || {},
              message: result.msg || '操作成功'
            })
          } else { // 业务逻辑错误
            uni.showToast({
              title: result.msg || '操作失败',
              icon: 'none'
            })
            reject({
              success: false,
              code: result.code,
              message: result.msg,
              data: result.data
            })
          }
        } else { // HTTP状态码错误
          uni.showToast({
            title: res.data?.msg || `请求失败: ${res.statusCode}`,
            icon: 'none'
          })
          reject({
            success: false,
            code: res.statusCode,
            message: res.data?.msg || '请求失败',
            data: res.data
          })
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络连接失败',
          icon: 'none'
        })
        reject({
          success: false,
          code: -1,
          message: '网络连接失败',
          data: err
        })
      }
    })
  })
}

// 帖子相关API
const postApi = {
  // 获取帖子列表（分页）
  getPostList(params = { page: 1, pageSize: 10 }) {
    return request({
      url: '/api/posts',
      method: 'GET',
      params
    }).then(res => ({
      list: res.data || [],
      pagination: {
        total: res.extra.total || 0,
        page: res.extra.page || params.page,
        pageSize: res.extra.pageSize || params.pageSize,
        totalPages: res.extra.totalPages || 1
      }
    }))
  },
  
  // 获取帖子详情
  getPostDetail(id) {
    return request({
      url: `/api/posts/${id}`,
      method: 'GET'
    }).then(res => res.data)
  },
  
  // 创建帖子
  createPost(data) {
    return request({
      url: '/api/posts',
      method: 'POST',
      data
    }).then(res => {
      return res.data
    })
  },
  
	// 点赞/取消点赞帖子
	likePost(postId, isLike) {
		console.log(postId)
	  return request({
		url: `/api/posts/${postId}/like`,
		method: 'POST',
		data: {
		  action: isLike ? 'like' : 'unlike' // 明确操作类型
		}
	  }).then(res => {
		uni.showToast({
		  title: res.message || (isLike ? '点赞成功' : '已取消点赞'),
		  icon: 'success'
		});
		return res.data;
	  }).catch(error => {
		uni.showToast({
		  title: error.message || (isLike ? '点赞失败' : '取消点赞失败'),
		  icon: 'none'
		});
		throw error; // 继续抛出错误以便外部处理
	  });
	},
  
  // 删除帖子（示例）
  deletePost(id) {
    return request({
      url: `/api/posts/${id}`,
      method: 'DELETE'
    }).then(res => {
      uni.showToast({
        title: res.message || '删除成功',
        icon: 'success'
      })
      return res.data
    })
  }
}

// 评论相关API
const commentApi = {
  // 创建评论
  createComment(data) {
    return request({
      url: '/api/comments',
      method: 'POST',
      data
    }).then(res => {
      uni.showToast({
        title: res.message || '评论成功',
        icon: 'success'
      })
      return res.data
    })
  },
  
  // 点赞评论
  likeComment(id) {
    return request({
      url: `/api/comments/${id}/like`,
      method: 'POST'
    }).then(res => {
      uni.showToast({
        title: res.message || '点赞成功',
        icon: 'success'
      })
      return res.data
    })
  },
  
  // 删除评论（示例）
  deleteComment(id) {
    return request({
      url: `/api/comments/${id}`,
      method: 'DELETE'
    }).then(res => {
      uni.showToast({
        title: res.message || '删除成功',
        icon: 'success'
      })
      return res.data
    })
  }
}

// 统一导出
export default {
  request,    // 基础请求方法
  postApi,    // 帖子相关API
  commentApi  // 评论相关API
}